Control component for controlling a delay interval within a memory component

ABSTRACT

Disclosed herein are embodiments of an asynchronous memory device that use internal delay elements to enable memory access pipelining. In one embodiment, the delay elements are responsive to an input load control signal, and are calibrated with reference to periodically received timing pulses. Different numbers of the delay elements are configured to produce different asynchronous delays and to strobe sequential pipeline elements of the memory device.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.12/434,989, filed May 4, 2009 and entitled “Asynchronous, High-BandwidthMemory Component Using Calibrated Timing Elements” (to be issued as U.S.Pat. No. 7,830,735), which is a continuation of U.S. patent applicationSer. No. 12/041,594, filed Mar. 3, 2008 (now U.S. Pat. No. 7,529,141),which is a continuation of U.S. patent application Ser. No. 11/165,797,filed Jun. 24, 2005 (now U.S. Pat. No. 7,362,626), which is acontinuation of U.S. patent application Ser. No. 10/846,220, filed May14, 2004 (now U.S. Pat. No. 6,934,201), which is a continuation of U.S.patent application Ser. No. 10/271,936, filed Oct. 15, 2002 (now U.S.Pat. No. 6,788,594), which is a division of U.S. patent application Ser.No. 09/796,924, filed Feb. 28, 2001 (now U.S. Pat. No. 6,788,593), allof which are hereby incorporated by reference.

TECHNICAL FIELD

This invention relates to high-speed memory systems and devices, and inparticular to high-speed memory devices that accommodate pipelinedmemory access operations.

BACKGROUND OF THE INVENTION

FIG. 1 shows an example of prior art asynchronous memory device 10.Memory device 10 is an asynchronous DRAM (dynamic random access memory)having a memory array 12 that is addressable by the combination of a rowaddress and a column address. The row and column addresses are typicallyprovided during different bus cycles on a common address bus ADDR. A RASsignal indicates a bus cycle in which the row address is supplied, andthe CAS signal indicates a bus cycle in which the column address issupplied. Memory results are provided in response to individual columnaddresses—in response to CAS bus cycles.

The memory device shown in FIG. 1 includes address registers 14 and 15that hold the row and column addresses during memory access. The RAS andCAS signals, respectively, load the row and column addresses from theaddress bus into registers 14 and 15.

The CAS signal also loads a command or instruction (write or read) intoa command register 16. A command decode block 17 interprets the currentmemory instruction and enables an appropriate driver 18 or 19, dependingon whether the memory operation is a write operation or a readoperation.

FIG. 2 shows the CAS timing of a read operation in the memory device ofFIG. 1. The rising edge of CAS loads the column address into register15, loads the read command into register 16, and starts the columnaccess. Actual memory access requires a time t_(CAC) from the leadingedge of the CAS signal. The assertion of CAS also turns on the dataoutput driver 18 after a delay of t_(ON). Initially, invalid data(cross-hatched) is driven on the DATA bus. Valid data is driven afterthe time t_(CAC) and until a time t_(OFF) after CAS is de-asserted.

This access is asynchronous since read data appears on the DATA busafter a time that is determined by the DRAM and not by timing signalssupplied externally (other than the initial CAS edge that loads theaddress). The advantage of this approach is simplicity—it is relativelyeasy to use this memory device. The disadvantage is performance—thenumber of read operations per unit of time is relatively limited sinceaccessing the memory array and transporting the resulting data on theDATA bus must be done sequentially before the next access can begin.

FIG. 3 shows pertinent elements of a synchronous DRAM 20, a prior artdevice having an architecture that facilitates higher access speedsrelative to the asynchronous DRAM described above. DRAM 20 has one ormore banks of memory arrays 21. It has row and column address registers22 and 23 that receive row and column addresses from a common addressbus ADDR. DRAM 20 also has a command register 24 that receives andstores commands or instructions from a command or control bus OP. Thisdevice allows more complex memory access operations that the device ofFIG. 1, and therefore allows more commands through its OP bus.

Instead of RAS and CAS signals, this device uses a single CLK signal, inconjunction with the OP bus, to load row and column addresses intoregisters 22 and 23. The command register 24 is loaded by the CLK signalas well.

Another difference from the circuit of FIG. 1 is that DRAM 20 hasregisters 25 and 26 in the path of the read and write data (between theDATA bus and the memory arrays 21). These registers are also loaded bythe CLK signal. A command decode block 27 generates signals that enabledrivers 28 and 29 for the read and write data.

The inclusion of two or more independent banks of memory arrays permitsmore that one memory access to take place at a time. In other words, asecond memory access operation can be initiated even before obtainingresults of an earlier operation. Registers 25 and 26, in the path of theread and write data, are necessary for this type of overlappedoperation. Such overlapped operation is typically referred to as“pipelined” operation or “pipelined” memory access.

FIG. 4 shows the timing of a column read access for synchronous DRAM 20.On the first rising edge of CLK the column address is loaded from theADDR bus into column address register 23, and a command is loaded fromthe OP bus into command register 24. Accessing the appropriate memoryarray and obtaining memory data requires a time t_(CAC), which isslightly less than the period of the clock signal CLK. At the nextrising edge of CLK, the read data is loaded from the memory array intoread data register 25. This CLK edge also turns on the data outputdriver 28 after a delay of t_(ON). The third rising edge of CLK turnsoff the data output drivers after a time t_(OFF).

This operation is synchronous, in that data output is timed and enabledrelative to an externally supplied clock signal. The row and columnaddress registers 22 and 23 form a first pipeline stage, in whichaddresses are obtained for accessing memory. The read data register 25forms a second pipeline stage, which is capable of holding memoryresults even as another memory access operation is initiated in thefirst pipeline stage. As a result of this technique, the two steps ofmemory access and data transport are done sequentially in the twopipeline stages of the DRAM. A second memory access could be startedafter the second CLK edge, overlapping the two operations.

There are two benefits to this technique. First, it permits sequentialtransactions to be overlapped, increasing the number of readtransactions per unit of time. Second, it resynchronizes the transportof the read data—the signals that enable and disable the drivers aretimed by the subsequent CLK edges.

As the signaling bandwidth of memory buses is increased, more pipelinestages can be added to the DRAM so that individual data slots are verysmall. Modern memory designs utilize a high degree of pipelining tosupport very high transfer rates.

Although pipelining has been essential to achieving high memory accessrates, the technology does have disadvantages. High latency is onedisadvantage, resulting from the need to quantize internal delays to theexternally-supplied clock period. A disproportionally high powerrequirement is another disadvantage. Power is a concern because afree-running clock dissipates power even when no useful work is beingdone. Some devices utilize low-power modes in which the clock is gatedoff, but this creates further latency problems. Furthermore, the powerneeded while restarting the clock threatens to erase whatever savingsmight have otherwise been gained by disabling the clock.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a prior art asynchronous memory device.

FIG. 2 is a timing diagram illustrating operation of the device of FIG.1.

FIG. 3 is a block diagram of a prior art synchronous memory device.

FIG. 4 is a timing diagram illustrating operation of the device of FIG.3.

FIG. 5 is a block diagram of a high-speed bus system.

FIG. 6 is a block diagram of a first embodiment of an asynchronous,pipelined memory device.

FIG. 7 is a timing diagram illustrating operation of the device of FIG.6.

FIG. 8 is a block diagram of a second embodiment of an asynchronous,pipelined memory device.

FIG. 9 is a timing diagram illustrating operation of the device of FIG.8.

FIG. 10 is a block diagram of delay elements and calibration logic asused in the embodiments described herein.

FIG. 11 is a block diagram showing one configuration of delay elementsfor use in the embodiments described herein.

FIG. 12 is a block diagram showing another configuration of delayelements for use in the embodiments described herein.

FIG. 13 shows a memory delay block that can be configured after devicemanufacture to change its delay.

FIG. 14 is a block diagram of a third embodiment of an asynchronous,pipelined memory device.

FIG. 15 is a block diagram showing address interfacing logic for afourth embodiment of an asynchronous, pipelined memory device.

FIG. 16 is a timing diagram illustrating operation of the componentsshown in FIG. 15.

FIG. 17 is a block diagram showing data interfacing logic for the fourthembodiment of an asynchronous, pipelined memory device.

FIGS. 18 and 19 are a timing diagrams illustrating operation of thecomponents shown in FIG. 17.

FIG. 20 is a block diagram showing a calibration circuit.

FIG. 21 is a timing diagram illustrating operation of the componentsshown in FIG. 20.

FIG. 22 is block diagram of a compare and control block.

FIG. 23 is a timing diagram illustrating operation of the componentsshown in FIG. 22.

FIG. 24 is a block diagram of a “D” cell delay element.

FIG. 25 is a block diagram of an “N*D” cell delay element.

FIG. 26 is a block diagram of a receiver block.

FIG. 27 is a timing diagram illustrating operation of the componentsshown in FIG. 27.

FIG. 28 is a block diagram of timing logic.

FIG. 29 is a block diagram of a decode block.

FIG. 30 is a timing diagram illustrating operation of the componentsshown in FIG. 29.

FIG. 31 is a block diagram of an EXP block.

FIG. 32 is a timing diagram illustrating operation of the componentsshown in FIG. 31.

FIG. 33 is a block diagram of an REP2 block.

FIG. 34 is a timing diagram illustrating operation of the componentsshown in FIG. 33.

FIG. 35 is a block diagram of an REP4 block.

FIG. 36 is a timing diagram illustrating operation of the componentsshown in FIG. 35.

FIG. 37 is a block diagram of a fifth embodiment of an asynchronouspipelined memory device.

FIG. 38 is a block diagram illustrating timing logic of the device shownin FIG. 37.

DETAILED DESCRIPTION

FIG. 5 shows a high-speed bus system 30. The bus system includes anumber of discrete devices 31-33, which communicate over an electricalbus 36 at very high speeds. Specifically, signals driven by devices31-33 on bus 36 have durations that are shorter than the propagationdelay of the bus. This type of environment is referred to as a“wavepipelined” environment, because more than one signal can be intransit on a bus line at any given time.

The described system includes a master device 31, such as a memorycontroller, and a plurality of slave devices 32-33, which might comprisememory devices. The master device 31 initiates and controls dataexchanges over bus 36. It is located at one end of the bus, referred toherein as the master end of the bus. Slave devices 32-33 are spacedalong the remaining portions of the bus, toward its other end.

The bus can be configured in a variety of different ways. For example,bus 36 might include a shared address bus that is used for both row andcolumn addresses. Alternatively, bus 36 might include individual buses,dedicated respectively to row and column addresses. Bus 36 also includesa data bus, which might be dedicated to only data or might be sharedbetween data and address information. Furthermore, the data bus might beuni-directional or bi-directional. Bus 36 further includes a commandbus, which again might be dedicated or shared.

The bus includes one or more input load signal lines 37 that carry inputload signals. An input load signal is issued by master device 31 andreceived by slave devices 32-33 to initiate data access cycles such asmemory read and write cycles in slave devices 32-33. As will bedescribed in more detail below, the slave devices are responsive to theinput load signal to load data at predetermined, asynchronous timesfollowing the input load signal. In the case of a read cycle, the slavedevices load data from internal storage and present or enable such dataon bus 36. In the case of a write cycle, the slave devices load datafrom bus 36.

First Embodiment

FIG. 6 shows pertinent components of an asynchronous high-speed memorydevice 50 which might be used in a system such as that shown in FIG. 5,or in other types of memory systems. The architecture shown in FIG. 6allows asynchronous data transfer while still allowing data pipelining.

This example is a DRAM, but the concepts described herein are applicableto various different kinds of volatile, non-volatile, random access, andread-only memory, including SRAM (static random access memory); flashmemory; mask-programmable memory; field-programmable memory;electrically-erasable, programmable, memory; ferro-electric memory;magneto-resistive memory, etc.

Furthermore, while certain aspects of the described circuits utilizeasynchronously generated signals, it is contemplated that the describedasynchronous techniques might be employed in circuits that also utilizeor receive periodic clock signals for certain purposes.

DRAM 50 comprises a plurality of memory arrays or banks 52, each havinga plurality of memory cells, which will be referred to collectively asthe memory core. This type of memory is addressable by bank, column, androw. Typically, the bank address is incorporated in the row address asthe highest several bits. The banks are capable of being independentlyaccessed.

Memory such as this is typically accessed by providing a row address,sensing all the columns of the specified row, and then accessing one ormore memory columns of the sensed memory row. Column data is availableonly after a minimum sense time, measured from the previous sensingoperation.

DRAM 50 has one or more address registers 54 and 55 that correspond torow and column addresses, respectively. An input load signal LD, alsoreferred to as an address load signal, is received from an externalsource such as a memory controller, and is used to load the row andcolumn address registers 54 and 55 from a common address bus ADDR. Inaddition DRAM 50 has one or more command registers 56 that load receivedcommand information from a command bus OP at a time indicated by thereceived LD signal. Command decoding logic 58 responds to the valueloaded in command register 56 to gate signals appropriately within thedevice.

Data is received from a data bus, labeled DATA in FIG. 6, during writecycles. Data is provided to the DATA bus during read cycles.

Appropriate buffers 60 are provided for incoming signals.

The memory device includes a read data register 62 that is positioned toreceive and latch data from core memory 52 during a memory read cycle.The output of read data register 62 passes through a read output driver63 on its way to the DATA bus.

The memory device also includes a write data register 64 that receivesdata from the DATA bus and provides it to core memory 52. A write driver65 is positioned between write data register 64 and the core memory 52.

Read data register 62 loads memory data from memory cells of core memory52 at a time indicated by a data register load and enable signalLOAD/ENABLE. More specifically, both read data register 62 and readdriver 63 are enabled in common by the LOAD/ENABLE signal. In responseto this signal, read data register 62 latches any data being provided bycore memory 52, and read driver 63 turns its outputs on to present readdata on the DATA bus.

Write data register 64 similarly loads memory data at a time indicatedby its received data register load and enable signal LOAD/ENABLE.Specifically, both write data register 64 and write driver 65 areenabled in common by the corresponding LOAD/ENABLE signal. In responseto this signal, write data register 64 latches any data being providedfrom the DATA bus, and write driver 65 turns its outputs on. During asubsequent, independent operation, the data provided from data register64 is loaded into memory cells of core memory 52.

The LOAD/ENABLE timing signals are created by respective asynchronousdelay elements 70 and 71. Each of these elements asynchronouslygenerates its LOAD/ENABLE signal at a predetermined time after receivingthe load signal LD. More specifically, command decoding logic 58 isconfigured so that delay element 70, which is associated with a readoperation, receives the LD signal when it is received in conjunctionwith a column read command from the OP command bus. Delay element 70responds by delaying the LD signal to create a LOAD/ENABLE signal whichis supplied to read data register 62. Delay element 71, which isassociated with a write operation, receives the LD signal when it isreceived with a column write command from the OP command bus. Itresponds by delaying the LD signal to create a LOAD/ENABLE signal whichis supplied to write data register 64.

Delay element 70 is responsive to its input signal to delay its inputsignal by a predetermined amount t_(CAC). This time correspondsapproximately to the time required from specifying a column address tothe time at which the corresponding data is available from core memory52. Delay element 71 is responsive to its input signal to delay itsinput signal by a predetermined amount t_(CWR). This time correspondsapproximately to the time required from specifying a column address tothe time at which the corresponding write data loaded into register 64and presented to the memory core 52.

FIG. 7 shows timing details for a read cycle in the device of FIG. 6.The input load signal LD initiates the memory access cycle. Note,however, that this signal is not a periodic clock signal as in the priorart. Rather, only a single transition is utilized for any single memoryoperation. Subsequent actions within the memory device, includingpipeline operations, are performed at asynchronously-timed intervalsfollowing the LD signal, without reference to an externally suppliedclock signal.

At the rising edge of the LD signal, a received column address is loadedfrom address bus ADDR into column address register 55 and a read commandis loaded from command bus OP into command register 56. The LD signal ispassed through command decoding logic 58 and initiates a timing intervalwithin delay element 70. After a time t_(CAC), the delay elementproduces the LOAD/ENABLE signal, which both loads memory data from corememory 52 into read data register 62, and also enables output driver 63(after a delay t_(ON) caused by the latency of driver 63). TheLOAD/ENABLE signal remains active for a time t_(BIT), and then turns offdriver 63 (after a delay t_(OFF), again caused by the latency of driver63). Write cycles occur with similar timing, except that data is latchedfrom the DATA bus rather than from core memory 52.

This configuration allows the two memory operation steps, access andtransport, to be performed sequentially, in a pipelined fashion. In afirst stage, address and command data are loaded into first stageregisters 55 and 56, and memory access is initiated. In a second stage,accessed memory data is loaded into second stage output register 62 anddriven on the DATA bus for transport. A second access cycle can beinitiated during the transport stage by reasserting the input loadsignal LD prior to completion of the first access cycle—after a timet_(CAC) from the initial LD signal.

Using this architecture, pipelining is controlled with asynchronousdelay elements rather than with synchronous clocking. There are twobenefits to this approach. First, the delay of each pipeline stage canbe adjusted differently, rather than forcing all of the delays to matchan arbitrary clock period. This also reduces latency, especially incases where the memory controller might operate at a clock cycle timethat is not well matched to the pipeline stage delays of the memory.

Power reduction is a second benefit. A prior art synchronous DRAM usesregisters to perform two functions: delay and information storage.Furthermore, as a single transaction passes through a synchronous DRAM,all registers must be continuously clocked. The memory device of FIG. 6,on the other hand, uses registers only for information storage. Also, asingle transaction passing through this device creates only the controledges needed for that transaction.

Furthermore, as the signaling bandwidth of memory buses is increased,the clock recovery logic (delay-locked loops and phase-locked loops)that are needed for synchronous DRAMs can require circuits that arecontinuously on and that require a long time interval to reach theiroperating point. This can result in a significant power level even whenno memory accesses are being performed. Turning off these circuits canresult in significant added latency when an access must be started.

Second Embodiment with Additional Pipeline Element

FIG. 8 shows a different embodiment of a memory device, referenced bynumeral 80. For the most part, this embodiment is identical to that ofFIG. 5, and identical reference numerals have therefore been used toindicate identical elements. The difference in this embodiment is anadditional stage of pipelining, relating to column addressing.Specifically, an additional address pipeline register 81 has been addedbetween column address register 55 and memory core 52. This register isloaded by its own LOAD signal, which is derived or created by delayingthe input load signal LD. Specifically, a delay element 82 receives theLD signal during operations involving column addresses, and delays theLD signal by an appropriate, predetermined amount.

FIG. 9 shows timing for a read cycle in the embodiment of FIG. 8. Theinput load signal LD initiates the memory access cycle. Again, thissignal is not a periodic clock but a single transition. Subsequentactions within the memory device are triggered asynchronously by theLOAD and LOAD/ENABLE signals, which are generated by asynchronous delayelements within the memory device.

At the rising edge of the LD signal, column address is loaded fromaddress bus ADDR into column address register 55 and a read command isloaded from command bus OP into command register 56. The LD signal ispassed through command decoding logic 58 and initiates a timing intervalwithin delay element 82. After a time t₁, the delay element produces theLOAD signal, which loads address pipeline register 81 with the columnaddress from address register 55. After another delay, t₂, produced bydelay element 70, the LOAD/ENABLE signal becomes active, which loadsmemory data from core memory 52 into read data register 62 and enablesoutput driver 63. Note that the LOAD/ENABLE signal in this embodimentmay be created either by delaying LOAD by t₁, or by delaying LD byt₁+t₂.

Note that the LD signal, which loads addresses and initiates memoryaccess cycles, might take forms other than the simple single-conductorvoltage transition shown in the disclosed embodiments. For example, theLD signal might be derived from a combination of two or more othersignals that have been logically gated to decode memory access events.

The advantage of this embodiment is the presence of the additionalpipeline stage, which allows a higher degree of overlapped operations.In this embodiment, a subsequent memory operation can be initiatedsooner than in the embodiment of FIG. 6—at time t₁, when the LOAD signaltransitions. If desired, additional address pipeline stages can beutilized to provide even higher bus utilization.

This embodiment, and the more complex embodiments that follow,demonstrate the general concept of a memory device having a plurality orsequence of pipeline registers or elements that are asynchronouslysignaled and loaded, in a predetermined sequence, to complete memoryaccess cycles. In the embodiment of FIG. 6, such pipeline elementsrelate to both addresses and data, including address registers 54 and55, command register 56, read data register 62, and write data register64. In the embodiment of FIG. 8, the pipeline elements include anadditional address pipeline register 81.

In the prior art, pipeline elements are generally signaled or strobed bya periodic clock signal, with the disadvantages that have already beennoted. In the embodiments described herein, however, a memory cycle isinitiated with a single input load signal. Timing logic, including aplurality of delay elements, is responsive to the input load signal toproduce a corresponding sequence of asynchronously timed register loadsignals. This sequence of load signals is utilized to load the variouspipeline elements in the proper sequence, with the proper timing.

Delay Elements

The various load signals to the pipeline elements are produced bycorresponding delay elements. In the described embodiments, a pluralityof delay elements are designed within a single integrated circuit tohave matching delays, and individual delay elements are grouped oraggregated to produce delays of different lengths. For example,individual delay elements might be designed to have a delay t_(d).Multiples of t_(d) are then obtained by chaining a plurality ofindividual delay elements.

For high-speed operations, it is desirable to calibrate the individualdelay elements as precisely as possible. Such calibration allowsexternal devices, such as memory controllers, to communicate insynchronization with the advance of data through the pipeline elementsof the memory device.

FIG. 10 shows a plurality of matching delay elements 90 such as arepreferably used in the embodiments of FIGS. 6 and 8. Each delay elementreceives an input signal 91 and in response produces an output signal92. The output signal is similar or identical to the input signal,except that the output signal is delayed by a time t_(d). Each delayelement is identically constructed within the integrated circuit, sothat each delay element will produce a nearly identical delay t_(d).

The time t_(d) is preferably changeable in response to a delay valuethat is either generated internally to the memory device or receivedfrom a source external to the memory device. More specifically, eachdelay element 90 is responsive to a delay adjustment signal 93. Thiscommon signal is provided to all of the matching delay elements. As aresult, the delay elements are collectively adjustable, to produceindividual matching delays. Such delays are asynchronous—in thedescribed embodiments, the delays are not necessarily aligned to anyreceived clock signal.

The memory device includes delay setting logic 94 that sets andcalibrates the delays of the delay elements. Delay setting logic 94receives a signal 95 that indicates a delay value. In response to thesupplied delay value, delay setting logic 94 sets its delay adjustmentoutput 93 to an appropriate value or level, so that each of the delayelements 90 provides the desired signal delay between its input and itsoutput.

Delay setting logic 94 preferably uses a feedback loop to calibrate itsdelay adjustment output, and to in turn calibrate the delay elements 90.Specifically, one of the delay elements 90 a is dedicated for use as acalibration element. Delay setting logic 94 generates a signal at theinput of calibration delay element 90 a, and monitors the resultingoutput from element 90 a to determine the actual delay resulting fromthe delay adjustment value 93. Based on this determination of the actualdelay, delay setting logic 94 varies its delay adjustment output signal93 until the desired delay value t_(d) is obtained through element 90 a.Because the delay elements are all similar in design and implementation,calibrating one of the delay elements ensures that all of them aresimilarly calibrated.

The delay value 95 can be generated by an internal source such as acapacitive circuit or other type of circuit that is capable ofgenerating a precise reference interval. More desirably, the delay valueis generated externally to the memory device, so that the internaldelays of the memory device can be synchronized with operations of anexternal device such as a memory controller.

The delay value 95 can be supplied to delay setting logic 94 in variousforms, but is preferably supplied as a pair of signals or timing eventsthat are separated in time by the actual desired delay. For example, thedelay value can be specified as the time between two voltage edges on asingle input conductor, or as the time between two signal edges on apair of conductors. Alternatively, the delay value might be specified astwo relatively timed events on an input conductor that is normally usedfor some other purpose, such as a conductor that is normally part of theaddress, data, or command bus, or a conductor that normally carries theinput load signal. The delay value might also be encoded on one or moreconductors such as the conductors that normally form part of theaddress, data, or command bus.

A calibration process, which utilizes the feedback of delay element 90a, is preferably performed at regular intervals, to account forvariations in temperature and voltage of the memory device. When timingevents are supplied by an external source, it is desirable to providesuch events on a periodically repeating basis for periodicrecalibration. As will become more apparent in the more detaileddiscussion below, it is desirable to provide periodic bursts of suchtiming events for recalibration purposes. Such bursts can be providedconcurrently with memory access cycles. However, it is not necessary forthe timing signals to a accompany individual memory cycles. Furthermore,the timing signals can be asynchronous to other signals used within thememory device.

FIG. 11 shows a configuration of delay elements for use in a memorydevice having three pipeline stages. In this example, each successivestage is loaded at a successive delay from the cycle initiation signalLD. A first delay block 96 has a single one of delay elements 90 toproduce a first delayed load signal to load the first stage of thepipeline. A second delay block 97 contains a pair of serially connecteddelay elements 90 to produce a second delayed load signal to load thesecond stage elements of the pipeline. A third delay block 98 containsthree serially connected delay elements 90 to produce a third delayedload signal to load the third pipeline stage. Although not shown, eachof the delay elements 90 is connected to be calibrated by a delayadjustment signal 93, as shown in FIG. 10.

FIG. 12 shows an alternative configuration of delay elements, again foruse in a memory device having three pipeline stages. In this case, eachsuccessive pipeline load signal is derived from the previous one. Thisconfiguration includes three delay blocks 100, 101, and 102, whichproduce load signals corresponding respectively to the three devicepipeline stages. The first delay block 100 is responsive to the cycleinitiation signal LD. The second delay block 101 is responsive to theoutput of the first delay block 100. The third delay block 102 isresponsive to the output of the second delay block 101.

In certain situations, it may be desirable to be able to configure,after device manufacture, the timing within a pipelined device such asdescribed above to vary the time at which data is loaded within variouspipeline stages. In the embodiment of FIG. 6, for example, it might bedesirable to configure the predetermined time t_(CAC) from the LD signalto the LOAD/ENABLE signal. This might be important to ensure that readdata returns to a memory controller after a fixed delay from when theread address is first transmitted, regardless of how far the memorycomponent is located from the controller. If, for example, there weretwo ranks of memory devices present on the memory bus, the closer rankwould be programmed with enough extra delay to compensate for the longerround trip flight time to the further rank. When a controller issued aread address to either rank, the read data would appear at the sameabsolute time at the controller pins.

FIG. 13 shows a memory delay block 104 that can be configured afterdevice manufacture to change its delay. This delay block contains threedelay elements 90 connected in series. In addition, fusible links 105connect the output of each delay element 90 to a block output 106. Priorto use, two of fusible links 105 are broken using conventionaltechniques such as by applying voltage to appropriate points of thememory device. Depending on which of the links are broken, a fixed delayof either t_(d), 2t_(d), or 3t_(d) can be selected as a block delay.

A delay block such as the one shown in FIG. 13 can be used at variousplaces in a an asynchronous pipeline design, to provide any desiredconfigurability in the delays employed between pipeline stages. Notethat mechanisms other than fusible links might be used to provide suchselectivity, such as multiplexers, control registers, non-volatilememory, etc. The embodiment described below with reference to FIGS.15-38, for example, uses a multiplexer to provide programmable delaysbetween pipeline stages.

Third Embodiment with Received Data Register Load

FIG. 14 shows yet another embodiment of an asynchronous memory device,referenced by numeral 110. For the most part, this embodiment isidentical to that of FIG. 6, and identical reference numerals havetherefore been used to indicate identical elements. The difference inthe embodiment of FIG. 14 is that the delay elements have been omitted.Instead, DRAM 80 accepts two externally-supplied input load signals: LD1and LD2. First input load signal LD1 is the same as the single LD signalof FIG. 5: it loads addresses into address registers 54 and 55, andloads a command into register 56.

Second input load signal LD2, also referred to herein as a data registerload signal, is used in place of the delay element outputs. The memorycontroller, which generates LD2, has its own timing elements that delayLD2 relative to LD1. During a read cycle, LD2 is gated to form aLOAD/ENABLE signal that loads read data register 62. Output driver 63 isresponsive to this LOAD/ENABLE signal to present read data on the DATAbus. During a write cycle, LD2 is gated to form a LOAD/ENABLE signalthat loads write data register 64 and enables driver 65. Timing detailsare similar to what is shown in FIG. 7.

Fourth Embodiment

FIGS. 15-38 show pertinent details of a further embodiment of ahigh-speed, asynchronous, pipelined memory device. This device isdesigned for a high-speed bus environment in which signals are driven onbus lines for durations that are shorter than the propagation delays ofthe bus lines themselves. Such systems are referred to as“wave-pipelined” systems, because more than one data signal can be inpropagation on a signal line at any given time. As in the embodimentsalready discussed, this embodiment allows a form of address and datapipelining in which data and address transfers within the device,including reads and writes of memory cells, are timed asynchronouslyfollowing a received memory access initiation signal such as an inputload signal.

Address Interfacing Logic

FIG. 15 shows details of address interfacing logic for an asynchronous,high-bandwidth DRAM using calibrated timing elements. Memory core isshown on the right, referenced by numeral 220.

On the left side of the FIG. 15 are interface signals that connect toexternal components. These signals include:

-   -   TREF1 is a time reference signal. The interval between        successive rising edges of this signal defines a time interval        which is used by a calibration circuit 222 to calibrate delay        elements within the memory device. The delay elements, in turn,        are used to create precise timing intervals for pipeline control        signals. The calibration circuit 222, also referred to as a        timing and voltage reference generator GEN, generates reference        voltages V_(REFP), V_(REFN), and V_(REF8), which are used to        adjust the delays of the delay elements. Calibration circuit 222        will be described in more detail with reference to FIGS. 20-23.    -   ADDR[13:0] is a 14 bit address bus input that receives bank,        row, and column addresses.    -   OP[3:0] is a four-bit command bus. It specifies a memory access        operation such as a read or write operation.    -   LD is an input load signal. Its rising edge causes the OP bus to        be loaded into a command register 224, and causes the ADDR input        bus to be loaded into address register 226. Its rising edge also        generates pulses on control signals to perform memory access        operations.

The LD, OP, and ADDR signals are received by input receiver blocks andbuffers, labeled RB and RD. These blocks provide signal buffering andalso impose uniform calibrated delays on the signals to ensure that thesignals maintain their initial time relationships to each other. Thereare two versions: RB and RD. The RB is used for signals which need todrive relatively large loads. The RD is used for signals which need todrive relatively small loads. The specific design of the RB and RDblocks is discussed with reference to FIGS. 26 and 27.

The command bus supports the following operations in this simplifiedexample:

OP[3] OP[2] OP[1] OP[0] Command 0 0 0 0 reserved 0 0 0 1 Activate (ACT)0 0 1 0 reserved 0 0 1 1 reserved 0 1 0 0 read (RD) 0 1 0 1 write (WR) 01 1 0 read and automatic pre-charge (RDA) 0 1 1 1 write and automaticpre-charge (WRA) 1 X X X No operation

An actual DRAM product would include a richer set of operations.However, the set shown above is sufficient to demonstrate animplementation of the basic transactions for the asynchronous DRAMinterface.

The ACT command accesses a row in the DRAM core 220, sensing it andstoring it in the sense amplifier latches. The RD and RDA commands reada column of information (32 bits in this example design) from the sensedrow. The WR and WRA commands write a column of information (32 bits)into the sensed row. The RDA and WRA commands also cause the accessedrow to be pre-charged at the end of the column operation.

ADDR receives bank and row addresses for the ACT command, or bank andcolumn addresses for the read and write commands. This design exampleincludes two bits (ADDR[13:12]) for selecting one of four independentmemory core banks. The ADDR[11:0] bits contain the row address or thecolumn address, depending on the type of memory operation.

This example includes a sequence of address registers that receiveaddresses and that advance the addresses through the address registersin response to generated sequences of asynchronously timed register loadsignals. The memory core is responsive to the addresses after they haveadvanced through this sequence of address registers.

A first stage of address pipelining is supported by address register226, which loads ADDR on the rising edge of LD1. Subsequent pipelineregisters 227 and 228 receive successively delayed versions of columnaddresses (CLD1 and CLD2), and a final stage is supported in memory core220 by an address register 230, which is loaded by another delayedversion of the LD1 signal (COLLAT).

Row addresses and column addresses are handled differently. A rowaddress is received along with the LD signal, and initially loaded bythe LD1 signal in the first address pipeline register 226. A SENSEsignal is generated by delay elements in response to the LD1 signal, ata predetermined time following the LD1 signal (see detailed timingbelow). The row address is received from first stage address register226 by a memory core register 232, where the row address is loaded bythe SENSE signal. Bank addresses for an automatic precharge operation(from a RDA or WRA command) are received from third stage addressregister 228 and are loaded into a bank address register 234 by yetanother delayed version of LD1 (PLD). From there, the prechargeoperation's bank address is loaded by another delayed version of LD1(PRECH) into the core's bank select register 236.

The described pipelined memory device includes memory timing or accesslogic 202 that is responsive to the input load signal LD1 and to thesupplied 4-bit operation code to generate the delayed versions of LD1mentioned above, and to thereby control the flow of information throughthe various pipeline registers shown in FIG. 15. Stated generally,timing logic 202 contains a plurality of delay elements that producecorresponding timing signals in response to the LD1 signal. These timingsignals, and others that are used in a data interface to be describedbelow, are responsible for the precise timing of the differentoperations. They use calibration logic to insure that the asynchronoustiming of the different intervals is accurate enough to support veryhigh transfer bandwidths. These signals take the place of a clock in aconventional synchronous DRAM.

Specifically, timing logic 202 generates the following signals:

-   -   PRECH is a load signal. Its rising edge causes the PBSEL[13:12]        bus to be loaded into a register 236. Its rising edge also        initiates a pre-charge operation in core 220.    -   PBSEL[13:12] contains the bank address for a pre-charge        operation that is scheduled after a column access.    -   SENSE is a load signal. Its rising edge causes the RADDR[13:0]        bus to be loaded into a register 232. Its rising edge also        initiates an activate operation in core 220.    -   RADDR[13:0] contains the bank address and row address for an        activate operation.    -   COLLAT is a load signal. Its rising edge causes the CADDR[13:0]        bus to be loaded into a register 230. Its rising edge also        initiates a column access operation in core 220.    -   CADDR[13:0] contains the bank and column address for a column        access.    -   PLD, CLD1, and CLD2 are load signal that are used in conjunction        with pipeline address registers 234, 227, and 228 to load        successively delayed versions of the address bus ADDR.

The remaining signals, COLCYC, WR, WLD, QEN, QLD, and QMX are used inthe data interface portion of the memory device, and will be describedbelow with reference to FIG. 17.

Registers 224, 226, 227, 228, and 234 each include a buffer for drivingthe load presented by the internal logic and wiring. The delay of theseregisters and buffers are masked by longer delays of control signals, sono timing calibration logic is used here.

The following table sets for exemplary timing parameters for the deviceof FIGS. 15-38. These are nominal values, listed so that the sequencingof memory operations will be clear, and are not intended to be limitingin any sense-actual values will be dependent upon the implementationdetails of the particular memory device. The descriptions in some casesrefer to a “D” cell. A “D” cell is a delay element having a standard,calibrated delay of t_(D). Most delays within the memory device aremultiples of t_(D), and are created by chaining a plurality of “D”cells.

Parameter Value Description t_(RC) 60 ns Minimum time for successiveactivate operations to the same bank t_(RR) 20 ns Minimum time forsuccessive activate operations to different banks t_(RP) 15 ns Minimumtime between activate and pre-charge operations to the same bank t_(CC)10 ns Minimum time for successive column operations to a bank t_(OP) 5ns Minimum time for successive commands on the OP bus t_(BIT) 2.5 nsMinimum time to transport a bit on the DQ, DM, DQS pins t_(Q) 2 nsMaximum time from load signal to output data valid for a register t_(S)1 ns Minimum time for a register input to be valid prior to a loadsignal for a register t_(H) 1 ns Minimum time for a register input to bevalid after a load signal for a register t_(WROFF) 5 ns Maximum interval(either direction) between the rising edges of LD and DQS for WR t_(CSH)20 ns Minimum interval between rising edges of SENSE and COLLAT t_(CLS)5 ns Minimum interval between rising edges of COLLAT and COLCYC t_(RCD)25 ns Minimum interval between rising edges of SENSE and COLCYC t_(DAC)7.5 ns Maximum interval from rising edge of COLCYC to valid read datat_(DOH) 2.5 ns Minimum interval from rising edge of COLCYC to valid readdata t_(CPS) 20 ns Minimum interval between falling edge of COLCYC andrising edge of PRECH t_(d) 0.25 ns Nominal delay of inverter pair in “d”cell (adjustable) t_(D) 1.25 ns Nominal delay of four inverter pairs andbuffer in “D” cell (adjustable) t_(X) 1.25 ns Nominal delay of “N_(X)”copies of the “D” cell: t_(X) = N_(X) * t_(D) t_(REF) and 10 ns Nominaldelay of “N_(REF)” copies of the “D” cell: t_(REF) = N_(REF) * t_(D) andt_(REF1) N_(REF) = 8 t_(TOT) 2.50 ns Nominal delay of “N_(TOT)” copiesof the “D” cell: t_(TOT) = N_(TOT) * t_(D) and N_(TOT) = 2 t_(DEC) 1.25ns Nominal delay of “N_(DEC)” copies of the “D” cell: t_(DEC) =N_(DEC) * t_(D) and N_(DEC) = 1 t_(LIM) 1.25 ns Nominal delay of“N_(LIM)” copies of the “D” cell: t_(LIM) = N_(LIM) * t_(D) and N_(LIM)= 1 t_(EXP) 5.00 ns Nominal delay of “N_(EXP)” copies of the “D” cell:t_(EXP) = N_(EXP) * t_(D) and N_(EXP) = 4 t_(EXP2) 6.25 ns Nominal delayof “N_(EXP2)” copies of the “D” cell: t_(EXP2) = N_(EXP2) * t_(D) andN_(EXP2) = 5 t_(REP2) 5.00 ns Nominal delay of “N_(REP2)” copies of the“D” cell: t_(REP2) = N_(REP2) * t_(D) and N_(REP2) = 4 t_(REP4) 2.50 nsNominal delay of “N_(REP4)” copies of the “D” cell: t_(REP4) =N_(REP4) * t_(D) and N_(REP4) = 2

FIG. 16 shows the timing of the signals shown in FIG. 15. The LD1 signaldictates the pace of activities in the asynchronous DRAM, somewhat likethe clock signal of a synchronous DRAM. Various load signals are simplydelayed versions of LD1. Thus, unlike a clock, only one edge of the LD1signal is needed or used to initiate the requested operation; allsubsequent edges that are needed for the operation are generated fromthe single LD1 edge. In a synchronous DRAM, more than one clock edge isapplied to move the operation from one pipeline stage to the next.

A synchronous controller will probably generate the LD1 signal (and theother input signals). As a result, they will probably have an underlyingregularity, and this is shown in FIG. 16. However, the asynchronousinterface would work just as well if the LD1 edges were issued in anirregular fashion, provided that the minimum values of timing parametersfor the memory core and interface were met.

A first LD1 edge 270, in conjunction with an ACT command on the OP1 bus,initiates an activate operation. Along with the ACT command, a bank androw address Rx is presented on the ADDR1 bus. The rising edge 270 of LD1loads the bank and row address into first-stage address register 226 andloads the ACT command into command register 224. The LD1 edge is delayeda time 2*t_(TOT), and then causes an edge on the SENSE signal. Thisloads the Rx address into core register 232 and starts the activateoperation. No further activity occurs in the interface for thisoperation.

In this figure and subsequent figures, delays caused by delay elementsare indicated by dashed lines from the event initiating the delay to theevent resulting from the delay. In FIG. 16, for example, a dashed lineis shown from the leading edge 270 of LD1 to the leading edge of theSENSE signal. This indicates that the SENSE signal is generated at apredetermined, asynchronous time after the leading edge of LD1. The timeis indicated alongside the dashed line, in this case 2*t_(TOT). Exceptwhere noted, these delays are implemented with collectively calibrateddelay elements such as discussed with reference to FIGS. 10-13, and suchas will be discussed in more detail below with reference to FIGS. 24 and25.

A second LD1 edge 272 (received from the memory controller), inconjunction with an OP (RD or WR) command on the OP1 bus, initiates acolumn access operation. It is presented at a time top after the firstLD1 edge. Along with the OP command, a bank and column address Cxa ispresented on the ADDR1 bus. The second LD1 edge is delayed a time2*t_(ToT), and then causes an edge on the CLD1 signal. This loads theCxa address into second-stage pipeline register 227. The CLD1 edge isdelayed an additional time t₈, and then causes an edge on the CLD2signal. This moves the Cxa from the pipeline register 227 into thethird-stage pipeline register 228. The CLD2 edge is delayed anadditional time t₄, and then causes an edge on the COLLAT signal. Thismoves the Cxa from pipeline register 228 into the fourth-stage register230 in the DRAM core. The COLLAT edge is delayed an additional time t₄,and then causes an edge on the COLCYC signal. This signal controls datatransport to and from the DRAM core, and will be discussed further withreference to FIG. 17.

A third LD1 edge 277, in conjunction with an OP (RD or WR) command onthe OP1 bus, initiates a second column access operation. This leadingedge is presented a time t_(CC) after the second LD1 edge 272. Again, abank and column address Cxb is presented on the ADDR1 bus. The third LD1edge 277 is delayed a time 2*t_(TOT), and then causes an edge on theCLD1 signal. This loads the Cxa address into second-stage pipelineregister 227. The CLD1 edge is delayed an additional time t₈, and thencauses an edge on the CLD2 signal. This moves the Cxa from the pipelineregister 227 into the third-stage pipeline register 228. The CLD2 edgeis delayed an additional time t₄, and then causes an edge on the COLLATsignal. This moves the Cxa from pipeline register 228 into thefourth-stage register 230 in the DRAM core. The COLLAT edge is delayedan additional time t₄, and then causes an edge on the COLCYC signal.This signal controls data transport to and from the DRAM core, and willbe discussed further with reference to FIG. 17.

Note that other transactions could be presented to the DRAM while thisfirst transaction is being processed. On the fourth and fifth LD1 edges282 and 283, for example, ACT commands are directed to other banks inthe DRAM. In this embodiment, these commands must be given a time t_(RR)or more after the first ACT command. An ACT command directed to thefirst bank must be given a time t_(RC) or more after the first ACTcommand.

Note also that there are several timing constraints imposed upon thetiming of the COLLAT and COLCYC signals by the DRAM core. In particular,they must be issued a time t_(CSH) and a time t_(RCD), respectively,after the SENSE signal.

Data Interfacing Logic

FIG. 17 shows details of data interfacing logic for the asynchronous,high-bandwidth DRAM shown in FIG. 15. Memory core is shown on the right,referenced by numeral 220.

The data interfacing logic includes a write demultiplexer 240 (alsoreferred to herein as demultiplexing logic) and a read multiplexer 242(also referred to herein as multiplexing logic).

The write demultiplexer 240 accepts a sequence of four eight-bit wordsfrom DQ[7:0] and assembles them into a single 32-bit word (WD1 and WD)for writing to memory core 220. The assembled 32-bit word WD1 is loadedinto an intermediate pipeline register 244, and then loaded into theappropriate memory core register 246 a subsequent, independent memoryoperation (see FIG. 19).

The read demultiplexer 242 reads a 32-bit word RD[3:0][7:0] from theDRAM core read register 247 and splits it into four sequential eight-bitwords for output from the memory device on DQ[7:0].

On the left side of FIG. 17 are the signals that connect to externalcomponents. These signals include:

-   -   DQS is a data strobe signal. The rising and falling edges of        this signal provide timing marks to indicate when valid read or        write data is present. During a read operation, this signal is        composed in a manner similar to other read data. During a write        operation, the DQS signal is used to load sequentially received        bits—to assemble the data into registers in a “strobe domain”        before passing it to the DRAM core.    -   DQ[7:0] is a data bus. It carries read and write data. Note that        the core reads or writes a parallel 32-bit quantity in each        column access (in this example implementation), and the        interface transports this in a serial burst of four 8-bit pieces        on the DQ bus. The mux and demux blocks in the data interface        are responsible for the conversion between the serial and        parallel formats of the data.    -   DM is a data mask signal. It is used for byte masking of the        incoming write data. It is not used with read data. Only one DM        pin is required since the example implementation uses an        eight-bit DQ bus. If the DQ bus were wider, more DM pins would        be allocated. It is treated like another write data bit by the        interface logic. Note that the DM signal is unidirectional,        unlike the DQ and DQS signals, which are bi-directional.

The right side of FIG. 17 includes the signals that connect to the DRAMcore. These signals include:

-   -   COLCYC is a load signal. Its rising edge causes the W signal to        be loaded into a register 248 within the DRAM core 220. Its        rising edge also initiates a data transport operation to or from        the core.    -   W is the write control signal. When it is a zero, the data        transport operation that is initiated by COLCYC is a read. When        it is a one, the data transport operation that is initiated by        COLCYC is a write.    -   WD[3:0][7:0] is the write data bus. It is loaded into register        246 in the DRAM core on the rising edge of COLCYC. From there it        is written into the sense amplifiers which hold the currently        selected row (page) of the DRAM core.    -   WE[3:0] is the write enable bus. It is loaded into register 246        in the DRAM core on the rising edge of COLCYC. Each bit controls        whether the associated eight bits of the WD bus is written to        the sense amplifiers of the DRAM core.    -   RD[3:0][7:0] is the read data bus. It is driven from register        247 in the DRAM core after the rising edge of COLCYC. It is        valid until the next rising edge of COLCYC.

The Write Demux block 240 accepts the write data DQ[7:0], the write maskDM, and the write data strobe DQS from the external memory controllercomponent The DQS signal functions as a timing signal to loadserially-received bits from DQ[7:0]. The signals are received by the RBand RD receiver cells 250 and 251. There are two versions: RB and RD.The RB cell is used for signals which need to drive relatively largeloads. The RD cell is used for signals which need to drive relativelysmall loads. Both blocks have the same delay, controlled by calibrationlogic. These blocks are described with reference to FIGS. 26 and 27.

The DQS1 signal from the RB cell is used to clock a set of registers 254which accumulate the four bits that appear serially on each wire foreach write operation. One of these registers is loaded on the risingedge of DQS1, and the rest are loaded on the falling edge of DQS1.Toggle flip-flop 249 alternates its state between low and high on eachfalling edge of DQS2. It is forced to a low state by the RESET signalwhich is applied when the component is first powered on. The DQS2 signalis a delayed version of the DQS1 data strobe, using the delay element245.

The result is that the four nine-bit serial words DQ3, DQ2, DQ1, and DQ0will all be valid for a timing window surrounding the falling edge ofDQS2 when the LD2 signal from toggle flip-flop 249 is high. These fourserial words are loaded into register 241 on that falling DQS2 edge.

When the complete 36 bit parallel word (WD1[3:0][7:0] and WE[3:0]) isloaded into register 241, it is then driven and loaded into aintermediate pipeline register 244 on the rising edge of the WLD signal.The output of this register drives the WD[3:0][7:0] write data bus ofthe DRAM core. The DM bits are assembled on the WE[3:0] write mask busin an identical manner.

The Read Mux block 242 accepts the read data RD[3:0][7:0] driven fromthe DRAM core after the rising edge of COLCYC. The parallel word isloaded into four eight bit registers 255 on the first rising edge of theQLD signal (when QMX is asserted to one). The four eight bit pieces arethen shifted out serially onto the DQ[7:0] bus (when QMX is asserted tozero). The QEN signal is asserted to one enabling the output driver 258.Two-to-one multiplexers 256 are responsive to the QMX signal to controlwhether registers 255 are loaded from the RD[3:0][7:0] in response tothe QLD signal, or are loaded from the previous register 255. Note thatthe pattern “1010” is appended to the RD[3:0][7:0] bus to form thetiming signal on the DQS output. This timing information is treated likeanother data bit; the timing signals QLD and QMX shift the “1010” timinginformation onto the conductor used for the DQS signal.

FIG. 18 shows the timing of the signals from the block diagram in FIG.17 for a read transaction. The first LD1 edge 270 is discussed abovewith reference to FIG. 16. The second LD1 edge 272 (with the RD command)initiates a column read operation. The operations associated with theloading the column address were already described, with reference toFIG. 16. The operations associated with the transport of the read databegin with the rising COLCYC edge. The COLCYC rising edge is delayed atime 2*t_(TOT)+t₈+t₄+t₄ after the second LD1 rising edge 272. The risingedge of COLCYC drives the read data Qa on RD[3:0][7:0] (corresponding tofirst column address Cxa) from register 247 after a delay of t_(DAC).This data remains valid for a time t_(DOH) after the next rising edge ofCOLCYC.

This read data Qa is sampled by registers 255 at a time 2*t_(TOT)+t₂₄after the second rising edge of LD1 (in the center of the valid window)by the first rising edge of the QLD control signal. The QMX and QENcontrol signals are asserted high a time 2*t_(TOT)+t₂₃ after the secondrising edge of LD1. The QEN signal will remain asserted high for thetime during which read data is being driven on the DQ and DQS pins. TheQMX signal will remain high for the first rising edge of QLD, allowingthe 32 bits of read data Qa[3:0][7:0] to be loaded into the serialoutput registers 255. The first eight bits Qa[3][7:0] will also bedriven onto the DQ[7:0] pins a time t_(Q) after the first rising edge ofQLD. QMX will be left low for the next three QLD rising edges, allowingthe remaining 24 bits Qa[2:0][7:0] to be shifted out.

The third LD1 edge 277 (with the RDA command) initiates a second columnread operation. This command produces a second series of operationsidentical to that of the first column read, culminating in driving thesecond read data Qb[3:0][7:] onto the DQ[7:0] pins. Note that theassertion of the QEN signal from the first read command merges with theassertion from the second read command; the QEN signal never returns toa low value between the commands.

The RDA command performs one set of operations not performed by the RDcommand; automatic pre-charge. The third rising edge 277 of LD1 causesthe PLD signal to be asserted high at a time 2*t_(TOT)+t₂₄ later. Thissignal loads the Cxb bank address into a register 234 (FIG. 15) in theaddress interface. The PRECH signal is asserted high a time2*t_(TOT)+t₃₂ after the third rising edge 277 of LD1. This signal loadsthe Cxb bank address into a register 236 (FIG. 15) in the DRAM core andstarts the pre-charge operation. The pre-charge operation requires atime t_(RP), at which point another ACT command can assert the SENSEsignal for that bank. The rising edge of PRECH must be at least a timet_(CPS) after the second falling edge of COLCYC (this is a coreconstraint).

FIG. 19 shows the timing of the signals from the block diagram in FIG.17 for a write transaction. The second LD1 edge 272 (with the WRcommand) initiates a column write operation. The operations associatedwith the column address were already described. The operationsassociated with the transport of the write data begin at approximatelythe same time on the first rising edge of DQS. In the timing diagram,the rising edges of these two signals are shown as being coincident, asthe external memory controller will drive them. There may be differencesin the routing delay of the data (DQ, DM, and DQS) signals and thecontrol (LD, OP, and ADDR) signals on the wires between the controllerand the memory component. This will appear as an offset between therising edge 272 of LD1 and the rising edge of DQS. The logic in theexample implementation can accommodate an offset from +t_(WROFF) to−t_(WROFF). This range could be increased further, if it were necessary.

On the first rising edge of DQS in FIG. 19, the first piece of writedata Da[3][7:0] is valid on the DQ[7:0] bus. The remaining three piecesDa[2:0][7:0] are valid around the next three falling and rising edges ofDQS. When all 32 bits have been loaded into individual registers, theyare loaded in parallel into a final 32-bit register 241 (FIG. 17) in theDQS timing domain. This register drives the WD1[3:0][7:0] bus. The writemask information has been transferred from the DM pin onto the WE1[3:0]bus with an identical data path (the mask information may be treatedlike write data for timing purposes).

The WLD control signal is delayed by 2*t_(TOT)+t₁ 1 after the secondrising edge 272 of LD1 (with the WR command). The rising edge of WLDcauses register 244 to sample the WD1 and WE1 buses. This sampling pointis designed to be in the center of the valid window for the data onthese buses so that the offset parameter −t_(WROFF) to −t_(WROFF) has asmuch margin as possible. It is possible to adjust the delay path for theWLD signal if the sampling point needs to be shifted because of routingdifferences in the control and data wires for the memory subsystem.

The data on the WD and WE inputs to the DRAM core are sampled byregister 246 (FIG. 17) that is loaded on the rising edge of COLCYC. TheCOLCYC control signal is delayed by 2*t_(TOT)+t₈+t₄+t₄ after the secondrising edge 272 of LD1 (with the WR command). The W control signal isdelayed by 2*t_(TOT)+t₁ 5 after the second rising edge 272 of LD1, andis also sampled by a register 248 that is loaded on the rising edge ofCOLCYC.

On the third rising edge of DQS in FIG. 19, the first piece of writedata Db[3][7:0] for the second column write is valid on the DQ[7:0] bus.The remaining three pieces Db[2:0][7:0] are valid around the next threefalling and rising edges of DQS. The 32 bits of this second column writeare loaded and transferred to the WD and WE buses in exactly the samemanner as the first column write. The data on the WD and WE inputs tothe DRAM core are sampled by register 246 that is loaded on the risingedge of COLCYC. The COLCYC control signal is delayed by2*t_(TOT)+t₈+t₄+t₄ after the third rising edge 277 of LD1 (with the WRAcommand). The W control signal also sampled on this edge, as before.

The WDA command performs one set of operations not performed by the WDcommand: automatic pre-charge. The third rising edge 277 of LD1 causethe PLD signal (FIG. 15) to be asserted high at a time 2*t_(TOT)+t₂₄later. This signal loads the Cxb bank address into a register 234 in theaddress interface (FIG. 15). The PRECH signal is asserted high a time2*t_(TOT)+t₃₂ after the third rising edge 277 of LD1. This signal loadsthe Cxb bank address into register 236 in the DRAM core and starts thepre-charge operation. The pre-charge operation requires a time t_(RP),at which point another ACT command can assert the SENSE signal for thatbank. The rising edge of PRECH must be at least a time t_(CPS) after thesecond falling edge of COLCYC (this is a core constraint).

In the described embodiment, timing information is carried on a single,dedicated conductor corresponding to the DQS signal. However, inalternative embodiments such timing information might be encoded withthe data itself. In such alternative embodiments, both timinginformation and data information might be transferred on a single signalline. A transmitter would receive a timing signal and the data signal,and in response produce a single signal to be carried by a single signalline to a receiver. In response, the receiver would separate the datainformation and timing information into two signals. A disadvantage ofthis technique is that the signal line must use some of its signalingbandwidth for the timing information. However, the technique might bedesirable in some embodiments because it minimizes any skew between thedata and timing information (as there would be if two separate signallines were used).

Delay Element Calibration Circuit

FIG. 20 shows the logic contained within the calibration circuit or GENblock 222 in FIG. 15. On the left side of the figure, the TREF1 suppliesan external timing reference consisting of pulses whose rising edges areseparated by intervals of TREF1. This signal is received by an RD block,and then serves as a clock for a one-bit register 302 which creates asignal NodeA and a three-bit register 304 which creates a signal NodeB.The NodeB signal is passed back to a three-bit incrementer 306, so thata three-bit counter is formed. One-bit register 302 is fed from themost-significant (MS) bit of NodeB. The reason for this will beexplained in the text accompanying the next figure.

The NodeA signal and MS bit of NodeB signal are passed through identicalbuffers 308 to give signals NodeC and NodeE, respectively. NodeE is fedthrough a delay block 310, consisting of N_(REF) copies of a D block. AD block is a delay element having a delay equal to t_(D), and will bedescribed in more detail with reference to FIG. 24. A delay oft_(REF)=N_(REF)*t_(D) is thus applied to the NodeE signal, yieldingsignal NodeD. The NodeC and NodeD signals drive INC and IND inputs of acompare and control block (CC block) 312.

CC block 312 compares the two signals on its INC and IND inputs andadjusts a pair of output voltages V_(REFP) and V_(REFN) so that theedges of the two signals are aligned in time. When a steady statevoltage is reached, the delay between the pulses t_(REF1) of the TREF1signal will match the delay t_(REF) of the delay block N_(REF)*D (towithin the resolution supported by the CC block). The reference voltagescan now be used to create calibrated delays within the interface logic.

Pulses are applied periodically on the TREF1 input from an externalsource such as the memory controller. Because of this, the referencevoltages are periodically adjusted to compensate for process, voltage,and temperature variations. In this manner, an external delay referencecan be used to create precise internal delays.

Note that it is not necessary that the TREF1 provide a continuous streamof pulses. Rather, short bursts of pulses are provided at regularintervals. The length of the interval is a function of how quicklytemperature and supply voltage can change—this will typically be on theorder of milliseconds. The length of the burst of pulses that aresupplied will typically be on the order of 30 to 50 pulses—the CC block312 in FIG. 20 will take one negative or positive voltage step for everyeight TREF1 pulses, and the first one may be in the incorrect directionbecause of the unknown state of the GEN block 222 in FIG. 20 when thepulse burst is started.

FIG. 21 shows the timing of the signals in the GEN block 222 in theprevious figure. The three bits of NodeB count from 000 through 111repeatedly. The most-significant bit is thus a divided-by-eight versionof the TREF1 input signal. The most-significant bit of NodeB is delayedby a buffer to give NodeE, which is then passed through a delay element310 to give NodeD, which is delayed by t_(REF). The NodeA signal followsthe NodeB signal by exactly t_(REF1) because of the logic in the GENblock. This means that NodeC follows the NodeB signal by exactlyt_(REF), as well. Thus, the CC block adjusts the reference voltagesuntil t_(REF) is equal to t_(REF1).

Note that a simplified GEN block would consist of only the CC block andthe delay block N_(REF)*D. The TREF1 signal would be received by the RDblock, and would drive the INC input and the input of the delay block.The TREF8 signal would simply be a buffered version of TREF1. Thedisadvantage of this simpler approach is its lack of robustness. Theminimum and maximum delay range of t_(REF) would be {0.5*t_(REF1),1.5*t_(REF1)}. If t_(REF) ever acquired a value outside of this range(at power-up, for example), the CC block would drive the referencevoltages in the wrong direction. The corresponding range of the morecomplicated GEN cell in FIG. 20 is {0*t_(REF1), 4*t_(REF1)}. This largercapture range ensures that there is less chance of a power-up error. Thecost is a three-bit incrementer, four register bits, and some buffers.

Compare and Control Block

FIG. 22 shows the logic inside the CC block 312 from FIG. 20. The IN_(C)and IND signals are the load and data input, respectively, for aregister bit 320. The IN_(C) input, through a buffer 322, also controlsthe gates of N and P channel transistors 324 and 325 so that acontrolled amount of charge is steered from the supply voltages VDDA andGNDA to the reference voltages V_(REFN) and V_(REFP). The output of theregister bit 320 controls the gates of further N and P channeltransistors 328 and 329, to control the direction that the referencevoltages move.

There are four capacitors, which are charged to one of the two supplyvoltages when IN_(C) is high. They are C_(N+), C_(N−), C_(P+), andC_(P−). The capacitors each have a capacitance of “C”. When IN_(C) islow, two of the four capacitors dump their charge into the capacitorsC_(REFP) and C_(REFN) on the reference voltage nodes V_(REFP) andV_(REFN). These two capacitors have the capacitive values N_(step)*C andN_(step)*C. Thus, every time there is a pulse on IN_(C), the referencevoltages will make a step of (VDDA−GNDA)/N_(step) in one direction orthe other. At the steady-state reference voltages, the steps willalternate between up and down. The value of N_(step) will be chosen as acompromise between the resolution of the steady state reference voltagesand the time required to reach the steady state values at power-up time.

It would be possible to add logic to the CC block so that it woulddetect when it has made a series of steps in the same direction. Itwould then use a bigger capacitor to take bigger steps to thesteady-state reference voltages. Once it began taking steps in theopposite direction, it would use the smaller capacitors for better delayresolution.

Note that V_(REFP) and V_(REFN) will always step in opposite directions.This will be clear when the details of the delay element are described(FIG. 24). In FIG. 22, when the RESET input is asserted high, theV_(REFP) and V_(REFN) voltages are driven to the values of GNDA andVDDA, respectively by transistors 330. This corresponds to the shortestpossible delay in the delay element. After RESET is deasserted low, TheGEN block 222 will drive V_(REFP) higher and V_(REFN) lower, in steps of(VDDA−GNDA)/N_(step) until the steady state values are reached. Thiswill compensate for all process, temperature and voltage effects atpower-up time. Thereafter, the TREF1 input will be given a series ofpulses periodically to ensure that variations of temperature and voltagewill be tracked out and the reference delay will match the externaldelay within the resolution of the CC block.

Note also that the supply voltages VDDA and GNDA used by the CC blockwill be dedicated supplies that are different from the supplies used bythe DRAM core and the data path logic of the interface. These dedicatedsupplies will be used only for the blocks of logic that generateprecisely timed control signals. There will be less disturbance on thesesupplies due to switching noise, and the calibrated timing intervalswill be more accurate as a result. The VDDA and GNDA will connect to thesame external power supplies as the VDD and GND used by the rest of theDRAM, but will have dedicated pins and a dedicated set of power supplywires inside the component.

FIG. 23 shows the timing of the CC block 312 when the reference voltagesare near their steady state values. The top diagram shows the case wherethe t_(REF) delay of the delay block is too small, and the bottomdiagram shows the case where the t_(REF) delay of the delay block is toolarge.

In both diagrams, the time when IN_(C) is high (after the IN_(C) risingedge), the four capacitors C_(N+), C_(N−), C_(P+), and C_(P−) arecharged to the supply rails. While this is happening, the output of thesampling register is settling to the value that determines what happenswhen IN_(C) drops low.

In the top diagram, the IN_(D) input doesn't have enough delay, and theIN_(C) rising edge samples IN_(D) as a “1”. This means that after IN_(C)drops low, the charge will be dumped so that V_(REFP) is increased andV_(REFN) is decreased.

In the bottom diagram, the IN_(D) input has too much delay, and theIN_(C) rising edge samples IN_(D) as a “0”. This means that after IN_(C)drops low, the charge will be dumped so that V_(REFP) is decreased andV_(REFN) is increased.

Note that the time that IN_(C) remains high and low doesn't affect theamount of charge dumped into the capacitors C_(REFP) and C_(REFN) on thereference voltage nodes V_(REFP) and V_(REFN). It is only necessary toprovide pulses on TREF1 with rising edges separated by the t_(REF1)interval—the duty cycle of these pulses is not critical.

Delay Elements

FIG. 24 shows the internal details of a “D” cell delay block 340 such asused in delay element 310 of the GEN block of FIG. 20. Delay element 310is actually N_(REF) copies of the D cell 340.

Each D cell 340 contains a plurality of “d” cell delay elements 342.Each d cell 342 is a pair of inverters 343 connected to VDDA through Ptransistors 344 whose gate voltage is V_(REFP), and connected to GNDAthrough N transistors 345 whose gate voltage is V_(REFN).

When V_(REFP) increases, the resistance of the P transistors 344increase, increasing the delay of a signal through the inverters 343.When V_(REFP) decreases, the resistance of the P transistors 344decreases, decreasing the delay of a signal through the inverters 343.

The behavior is complementary for an N transistor. When V_(REFN)decreases, the resistance of the N transistors 345 increases, increasingthe delay of a signal through the inverters 343. When V_(REFN)increases, the resistance of the N transistors 345 decreases, decreasingthe delay of a signal through the inverter 343.

At power-on, the V_(REFP) and V_(REFN) voltages are driven to the valuesof GNDA and VDDA, respectively. This corresponds to the shortestpossible delay in the delay element. The GEN block 222 will driveV_(REFP) higher and V_(REFN) lower until the steady state values arereached. Note that V_(REFP) and V_(REFN) will always step in theopposite direction.

Other voltage-controlled delay structures are possible. The one that isdescribed gives a good delay range with fairly modest area requirements.It would also be possible to use a digitally-controlled delay structure,in which delay elements were added and removed with a multiplexerstructure. This would yield much coarser delay resolution, however. Ahybrid delay unit with a coarse structure and a fine structure couldalso be used.

D cell 340 also includes a buffer 350 (inverter pair) for restoring thenominal slew rate to a signal passing through the block. This permitsthe D cell to drive a larger load directly. The delay of the “D” cell ist_(D)=n*t_(d), where t_(d) is the “d” cell delay.

FIG. 25 shows an “N*D” cell 360. It consists of “N” of the “D” cells340. The delay of the “N*D” cell is t_(N)*D=N*t_(D), where t_(D) is the“D” cell delay. The delay of the cell used in the GEN block 222 (FIG.20) is t_(REF)=N_(REF)*t_(D). The values of “n” and “N” will beimplementation dependent.

Receiver Blocks

FIG. 26 show details of the RB and RD receiver blocks shown in previousfigures. Note that these two blocks are the same except that one isdesigned to drive a heavier load (the RB cell). The purpose of theseblocks is to buffer their signals and to produce a uniform delay ofT_(TOT) in each of their signals.

Each receiver block has a real signal path, shown in the upper part ofFIG. 26, and an image or reference signal path, shown in the lower partof FIG. 26. The image signal path receives the TREF8 signal (from theGEN block of FIG. 20) and produces a pair of reference voltages V_(ADJP)and V_(ADJN) that, when applied to a delay block, cause the receiverblock to produce a delay equal to t_(TOT).

The real signal path consists of an input signal IN passing through areceiver 360(a), a delay cell 362(a) comprising N_(ADJ) D cells, and abuffer 364(a) to the output OUT.

The image signal path consists the TREF8 signal (from the GEN block of aFIG. 20) passing through an identical receiver 360(b), through a delaycell 362(b) (N_(ADJ)*D), and through a buffer 364(b). The buffer for theimage signal drives a load that is equivalent to that driven by thebuffer for the real signal. This image signal is fed into the IN_(D)input of a CC block 366 (see FIG. 22). The TREF8 signal also goesthrough a second delay cell 368 with a delay of t_(TOT)=N_(TOT)*t_(D)and is fed into the IN_(C) input of the CC block 366.

The reference voltages V_(ADJP) and V_(ADJN) produced by the CC blockcontrol the delay of the identical N_(ADJ)*D blocks 362(a) and 362(b).As a result, the pulses from the TREF8 signal will propagate through thetwo paths in the lower block, and will be compared in the CC cell 366.The CC cell will adjust the V_(ADJP) and V_(ADJN) voltages to make thedelay of the receiver 360(b), delay cell 362(b), and buffer 364(b) equalto t_(TOT).

In the upper cell, the delay seen by the input signal IN through thereceiver 360(a), delay cell 362(a), and buffer 364(a) will also be equalto t_(TOT) since all the components are matched and the V_(ADJP) andV_(ADJN) voltages are shared. If the delay of the receiver and bufferchange because of temperature and supply voltage variations, the delayof the N_(ADJ)*D delay cell will change in a complementary fashion sothe overall delay remains t_(TOT).

FIG. 27 shows a timing diagram for the RB and RD cells. The nodes alongthe real signal path are shown, and it can be seen that the delay fromthe input node (NodeA) to the output node (NodeJ) is the sum oft_(TOT)=t_(REC)+t_(ADJ)+t_(BUF). The value of t_(TOT) will be chosen tobe greater than the maximum possible values (due to process, temperatureand voltage variations) of t_(REC), t_(ADJ), and t_(BUF) when theV_(ADJP) and V_(ADJN) voltages are at their minimum and maximum values,respectively (giving minimum delay). This ensures that the N_(ADJ)*Ddelay cell has enough range to compensate for the process, temperature,and voltage variations without adding unnecessary delay.

This example implementation of an asynchronous DRAM interface assumesthat the real signal path of each RB and RD cell has a dedicated imageor reference signal path. In an actual implementation, it is likely thatthe image signal paths could be shared among all real signal paths thatare matched. For example all the bits of the address input ADDR[13:0]could share one image path. This would reduce the cost of calibratingthe RB and RD delay to the area of the (N_(ADJ)*D) delay cell plus afraction of the image signal path cell. The V_(ADJP) and V_(ADJN)voltage signals would be routed to all the (matched) real signal pathsfrom the image signal path.

It would also be possible to use the real signal path to generate itsown adjustment voltage. This requires that the real signal path consistof pulses with a repetition rate that is constrained by the logic in theCC block. The advantage of this is that the delays are measured andadjusted in the real signal path, saving some area and perhaps makingthe timing calibration more accurate. The disadvantage is that if a realpath is not exercised often enough, its delay may drift. The advantageof the image signal path is that it can have its adjustment voltageupdated without interfering with its real signal operation.

Timing Logic

FIG. 28 shows details of timing logic 202, also referred to as a decodeblock. The timing logic accepts the OP2[3:0] command bus from aninternal register and the LD1 signal that loads that register, andproduces a set of control and timing signals that are precisely shapedand timed. These control signals fan out to the asynchronous interfaceand DRAM core and orchestrate the various memory access operations asalready described.

There are five DEC blocks 401 which decode the four bit command OP2 intofive command signals, indicating an activate operation (ACT), a columnoperation (RD/WR/RDA/WRA), a column read operation (RD/RDA), anautomatic pre-charge operation (RDA/WRA), and a column write operation(WR/WRA).

These five signals then pass through a number of delay cells 402, eachof which has a delay that is indicated in the figure. For example, thecell “N_(x)*D” generates the delay t_(x)=N_(x)*t_(D)=X*t_(D), where thevalue of “X” can be {1, 4, 8, 11, 23, 24}. These delay cells use thestandard reference voltages V_(REFP) and V_(REFN) because the delays arecalibrated to the reference delay t_(D) from the GEN cell. The EXP,REP2, and REP4 (each of which will be described below) then shape thedecoded and delayed signals cells.

FIG. 29 shows the internal logic for an exemplary DEC block 401. Again,this circuit includes a real signal path and an image or referencesignal path. The real signal path is contained in the upper part of thefigure. It begins with the input bus OP2[3:0] passing through the“logic” block 405, which decodes the particular operation to which theDEC block responds. This logic block, as an example, will consist of a2- or 3-input “and” gate.

The LD1 load signal passes through a delay block 406(a) (N_(DEC)*D).This provides a delay of t_(DEC)=N_(DEC)*t_(D) which will be enough tomatch the load-to-output delay of the OP2 register 224 (FIG. 15) and thedelay of the “logic” block 405. The delayed LD1 signal and the decodedOP2 signal are and'ed with a gate 408(a) and then passed through asecond delay cell 410(a) (N_(ADJ)*D), and a buffer 412(a) to the outputOUT.

Below the real signal path is the image signal path. It consists of theTREF8 signal (from the GEN block of FIG. 20) passing through identicaldelay cells 406(b) and 410(b) (N_(DEC)*and N_(ADJ)*D) and gate 408(b),and buffer 412(b). The image path buffer 412(b) drives a load that isequivalent to that driven by the buffer 412(a) for the real signal. Thisimage signal is fed into the IN_(D) input of a CC block 414. The TREF8signal also goes through a second delay cell 416 with a delay oft_(TOT)=N_(TOT)*t_(E), and is fed into the IN_(C) input of the CC block.

The reference voltages V_(ADJP) and V_(ADJN) produced by the CC block414 control the delay of the N_(ADJ)*D blocks. As a result, the pulsesfrom the TREF8 signal will propagate through the two paths in the lowerblock, and will be compared in the CC cell. The CC cell will adjust theV_(ADJP) and V_(ADJN) voltages to make the delay of the two delay cells406(b), 410(b) and buffers 412(b) equal to t_(TOT).

In the upper cell, the delay seen by the input signal IN through thedelay cell 406(a), and gate 408(a), delay cell 410(a), and buffer 412(b)will also be equal to t_(TOT) since all the components are matched andthe V_(ADJP) and V_(ADJN) voltages are shared. If the delay of thereceiver and buffer change because of temperature and supply voltagevariations, the delay of the N_(ADJ)*D delay cell will change in acomplementary fashion so the overall delay remains t_(TOT).

FIG. 30 shows a timing diagram for the DEC cells. The nodes along thereal signal path are shown, and it can be seen that the delay from theLD1 node (NodeA) to the output node (NodeJ) is the sum oft_(TOT)=t_(DEC)+t_(AND)+t_(ADJ)+t_(BUF). The value of t_(TOT) will bechosen to be greater than the maximum possible values (due to process,temperature and voltage variations) of t_(DEC), t_(AND), t_(ADJ), andt_(BHF) when the V_(ADJP) and V_(ADJN) voltages are at their minimum andmaximum values, respectively (giving minimum delay). This ensures thatthe N_(ADJ)*D delay cell has enough range to compensate for the process,temperature, and voltage variations without adding unnecessary delay.

This example implementation of an asynchronous DRAM interface assumesthat the real signal path of each DEC cell has a dedicated image signalpath. In an actual implementation, it is likely that the image signalpaths could be shared among all real signal paths that are matched. Thisis particularly easy since each DEC cell fans out to either one or twoother cells that are also part of the Decode block. This would reducethe cost of calibrating the DEC delay to the area of the (N_(ADJ)*D)delay cell plus a fraction of the image signal path cell. The V_(ADJP)and V_(ADJN) voltage signals would be routed to all the (matched) realsignal paths from the image signal path.

FIG. 31 shows the internal logic for the EXP blocks shown in FIG. 28.The EXP block is one of the three blocks responsible for shaping thecontrol pulses that have been decoded and delayed. The real signal pathis contained in the upper part of the figure. It begins with the inputsignal IN passing through an “and” gate 440(a). The IN signal alsopasses through a delay block 442 (N_(LIM)*D). This provides a delay oft_(LIM)=N_(LIM)*t_(D). The inverted delayed IN signal and the undelayedIN signal are and'ed by gate 440(a) to give NodeC. This first circuit isa pulse limiter—it accepts a pulse of unknown width (high time) andproduces a pulse of width t_(LIM). Note that the input signal widthshould be greater than t_(LIM)—this will be the case for all the signalsproduced by the decode blocks 401 in FIG. 28. The limited pulse is alsodelayed by t_(AND) relative to the input pulse, but the accumulateddelays of the EXP block will be adjusted to a calibrated total with adelay element.

The NodeC signal is expanded to the appropriate width by the nextcircuit. NodeC passes to the “set” input of an SR latch 446(a). Thiscauses the “q” output to be set high. NodeC also passes through a delayblock 448 (N_(EXP)*D) which provides a delay of t_(EXP)=N_(EXP)*t_(D).The delayed signal passes to the “reset” input of the SR latch 446(a),causing the “q” to return low after a pulse width of about t_(EXP).

The NodeF output of the SR latch 446(a) passes through a third delayblock 450(a) (N_(ADJ)*D) and a buffer 452(a) which drives the controlsignal to the interface logic and the DRAM core. This third delay lineis used to add an adjustable delay so the total delay of the EXP blockremains fixed at the desired value t_(TOT).

Below the real signal path is an image signal path. It consists of theTREF8 signal (from the GEN block) passing through an identical “and”gate 440(b), SR latch 446(b), delay cell 450(b) (N_(ADJ)*D) and buffer452(b). The buffer for the image signal drives a load that is equivalentto that driven by the buffer for the real signal. This image signal isfed into the IN_(D) input of a CC block 454. The TREF8 signal also goesthrough a second delay cell 456 with a delay of t_(TOT)=N_(TOT)*t_(D)and is fed into the IN_(C) input of the CC block. The reference voltagesV_(ADJP) and V_(ADJN) produced by the CC block 454 control the delay ofthe N_(ADJ)*D blocks 450(a) and 450(b).

The pulses from the TREF8 signal propagate through the two paths in thelower block, and are compared in the CC cell 454. The CC cell adjuststhe V_(ADJP) and V_(ADJN) voltages to make the delay of the two delaycells and buffer equal to t_(TOT). Note that the delay cells (N_(LIM)*D)and (N_(EXP)*D) are not included here because there is no need to shapethe TREF8 reference signal; the CC block only uses the relativepositions of the IND and INC rising edges to generate the adjustmentvoltage.

In the upper cell, the delay seen by the input signal IN through the“and” gate, SR latch, delay cell and buffer will also be equal tot_(TOT) since all the components are matched and the V_(ADJP) andV_(ADJN) voltages are shared. If the delay of the receiver and bufferchange because of temperature and supply voltage variations, the delayof the N_(ADJ)*D delay cell will change in a complementary fashion sothe overall delay remains t_(TOT).

FIG. 32 shows a timing diagram for the EXP cells. The nodes along thereal signal path are shown, and it can be seen that the delay from theIN node (NodeA) to the output node (NodeJ) is the sum oft_(TOT)=t_(AND)+t_(NOR)+t_(NOR)+t_(ADJ)+t_(BUF). The value of t_(TOT)will be chosen to be greater than the maximum possible values (due toprocess, temperature and voltage variations) of t_(AND), t_(NOR),t_(NOR), t_(ADJ), and t_(BDF) when the V_(ADJp) and V_(ADJN) voltagesare at their minimum and maximum values, respectively (giving minimumdelay). This ensures that the N_(ADJ)*D delay cell has enough range tocompensate for the process, temperature, and voltage variations withoutadding unnecessary delay.

Note also that the pulse width at NodeJ is (t_(EXP)−t_(NOR)). The pulsewidth will have some variation with respect to temperature and voltagesince the t_(NOR) delay is uncalibrated. However, the position of thefalling edge of all control signals is not important—it is onlynecessary to precisely position the rising edges. Thus, this slightvariation of pulse width will not affect the performance of the memorycomponent.

This example implementation of an asynchronous DRAM interface assumesthat the real signal path of each EXP cell has a dedicated image signalpath. In an actual implementation, it is likely that the image signalpaths could be shared among all real signal paths that are matched. Thiscould be accomplished by adding dummy loading to the real signals sothat all EXP blocks see the same effective load. This would reduce thecost of calibrating the DEC delay to the area of the (N_(ADJ)*D) delaycell plus a fraction of the image signal path cell. The V_(ADJP) andV_(ADJN) voltage signals would be routed to all the (matched) realsignal paths from the image signal path.

FIG. 33 shows the internal logic for a REP2 block such as shown in FIG.28. This is one of the three blocks responsible for shaping the controlpulses that have been decoded and delayed. A real signal path iscontained in the upper part of the figure. It begins with the inputsignal IN passing through an “and” gate 460(a). The IN signal alsopasses through a delay block 462 (N_(LIM)*D). This provides a delay oft_(LIM)=N_(LIM)*t_(D). The inverted delayed IN signal and the undelayedIN signal are and'ed by gate 460(a) to give NodeC. This first circuit isa pulse limiter—it accepts a pulse of unknown width (high time) andproduces a pulse of width t_(LIM). Note that the input signal widthshould be greater than t_(LIM)—this will be the case for all the signalsproduced by the decode blocks 401 in FIG. 28. The limited pulse is alsodelayed by t_(AND) relative to the input pulse, but the is accumulateddelays of the REP2 block will be adjusted to a calibrated total with adelay element.

The NodeC signal is expanded to the appropriate width by the nextcircuit. NodeC passes to the “set” input of an SR latch 464(a). Thiscauses the “q” output to be set high. NodeC also passes through a delayblock 466 (N_(EXP2)*D) which provides a delay oft_(EXP2)=N_(EXP2)*t_(D). The delayed signal passes to the “reset” inputof the SR latch, causing the “q” to return low after a pulse width ofabout t_(EXP).

The NodeF output of the SR latch 464(a) passes through an “or” gate468(a). The NodeF signal also passes through a delay block 470(N_(REP2)*D). This provides a delay of t_(REP2)=N_(REP2)*t_(D). Thedelayed NodeF signal and the undelayed NodeF signal are or'ed to giveNodeH. The values of t_(EXP2) and t_(REP2) are chosen so that the twopulses overlap and merge. This is because the REP2 block produces theenable signal for the output driver. It must remain asserted (withoutglitching low) during the whole time that read data is driven.

The NodeH output of the “or” gate passes through a third delay block472(a) (N_(ADJ)*D) and a buffer 474(a) which drives the control signalto the interface logic and the DRAM core. This third delay line is usedto add an adjustable delay so the total delay of the REP2 block remainsfixed at the desired value t_(TOT).

Below the real signal path is an image signal path. It consists of theTREF8 signal (from the GEN block of FIG. 20) passing through anidentical “and” gate 460(b), SR latch 464(b), delay cell 472(b)(N_(ADJ)*D), “or” gate 468(b), and buffer 474(b). The buffer 474(b) forthe image signal drives a load that is equivalent to that driven by thebuffer 474(a) for the real signal. This image signal is fed into theIN_(D) input of a CC block 476. The TREF8 signal also goes through asecond delay cell with a delay of t_(TOT)=N_(TOT)*t_(D) and is fed intothe IN_(C) input of the CC block 478. The reference voltages V_(ADJP)and V_(ADJN) produced by the CC block control the delay of the N_(ADJ)*Dblocks.

The pulses from the TREF8 signal will propagate through the two paths inthe lower block, and will be compared in the CC cell 478. The CC cellwill adjust the V_(ADJP) and V_(ADJN) voltages to make the delay of thetwo delay cells and buffer equal to t_(TOT). Note that the delay cells(N_(LIM)*D), (N_(EXP2)*D) and (N_(REP2)*D) are not included here becausethere is no need to shape the TREF8 reference signal; the CC block onlyuses the relative positions of the IN_(D) and IN_(C) rising edges togenerate the adjustment voltage.

In the upper cell, the delay seen by the input signal IN through the“and” gate, SR latch, delay cell, “or” gate, and buffer will also beequal to t_(TOT) since all the components are matched and the V_(ADJP)and V_(ADJN) voltages are shared. If the delay of the receiver andbuffer change because of temperature and supply voltage variations, thedelay of the N_(ADJ)*D delay cell will change in a complementary fashionso the overall delay remains t_(TOT).

FIG. 34 shows a timing diagram for the REP2 cell of FIG. 33. The nodesalong the real signal path are shown, and it can be seen that the delayfrom the IN node (NodeA) to the output node (NodeJ) is the sum oft_(TOT)=t_(AND)+t_(NOR)+t_(NOR)+t_(OR)+t_(ADJ)+t_(BUR). The value oft_(TOT) will be chosen to be greater than the maximum possible values(due to process, temperature and voltage variations) of t_(AND),t_(NOR), t_(NOR), t_(OR), t_(ADJ), and t_(BUF) when the V_(ADJP) andV_(ADJN) voltages are at their minimum and maximum values, respectively(giving minimum delay). This ensures that the N_(ADJ)*D delay cell hasenough range to compensate for the process, temperature, and voltagevariations without adding unnecessary delay.

Note also that the pulse width at NodeJ is (t_(EXP2)+t_(REP2)−t_(NOR)).The pulse width will have some variation with respect to temperature andvoltage since the t_(NOR) delay is uncalibrated. However, the positionof the falling edge of all control signals is not important—it is onlynecessary to precisely position the rising edges. Thus, this slightvariation of pulse width will not affect the performance of the memorycomponent.

If the subsequent column operation is also a RD or RDA command, therewill be another pulse on NodeA a time t_(CC) after the first pulse(dotted line). The pulse that is produced a time t_(TOT) later on NodeJwill be merged with the first pulse because of the “or” gate that drivesNodeH. This ensures that the output driver remains on when driving readdata from consecutive read accesses.

This example implementation of an asynchronous DRAM interface assumesthat the real signal path of the REP2 cell has a dedicated image signalpath (i.e., only one REP2 cell is used in this example). Otherimplementations might use more than one REP2 cell, in which case theimage signal paths could be shared among all real signal paths that arematched. This could be accomplished by adding dummy loading to the realsignals so that all REP2 blocks see the same effective load. This wouldreduce the cost of calibrating the DEC delay to the area of the(N_(ADJ)*D) delay cell plus a fraction of the image signal path cell.The V_(ADJP) and V_(ADJN) voltage signals would be routed to all the(matched) real signal paths from the image signal path.

FIG. 35 shows the internal logic for a REP4 block such as shown in FIG.28. This is one of the three blocks responsible for shaping the controlpulses that have been decoded and delayed. The real signal path iscontained in the upper part of the figure. It begins with the inputsignal IN passing through an “and” gate 500(a). The IN signal alsopasses through a delay block 502 (N_(LIM)*D). This provides a delay oft_(LIM)=N_(LIM)*t_(D). The inverted delayed IN signal and the undelayedIN signal are and'ed by gate 500(a) to give NodeC. This first circuit isa pulse limiter—it accepts a pulse of unknown width (high time) andproduces a pulse of width t_(LIM). Note that the input signal widthshould be greater than t_(LIM)—this will be the case for all the signalsproduced by the decode blocks 401 in FIG. 28. The limited pulse is alsodelayed by t_(AND) relative to the input pulse, but the accumulateddelays of the REP4 block will be adjusted to a calibrated total with adelay element.

The NodeC output of the pulse limiter passes through an “or” gate504(a). The NodeF signal also passes through three delay blocks 506,507, and 508 (N_(RE4)*D). Each provides a delay oft_(REP4)=N_(REP4)*t_(D). The three delayed NodeF signals and theundelayed NodeF signal are or'ed at gate 504(a) to give NodeH. Thevalues of t_(LIM) and t_(REP4) are chosen so that the four pulses do notoverlap. This is because the REP4 block produces the load signal for theoutput registers 255 (FIG. 17). The rising edge of the first pulse loadsin the parallel read data (and allows the first piece of it to be drivenout), and the rising edges of the next three pulses shift the remainingthree pieces out.

The NodeH output of the “or” gate 504(a) passes through a third delayblock 510(a) (N_(ADJ)*D) and a buffer 512(b) which drives the controlsignal to the interface logic and the DRAM core. This third delay lineis used to add an adjustable delay so the total delay of the REP4 blockremains fixed at the desired value t_(TOT).

Below the real signal path is the image signal path. It consists of theTREF8 signal (from the GEN block of FIG. 20) passing through anidentical “and” gate 500(b), “or” gate 504(b), delay cell 510(b)(N_(ADJ)*D), and buffer 512(b). The buffer 512(b) for the image signaldrives a load that is equivalent to that driven by the buffer 512(a) forthe real signal. This image signal is fed into the IN_(D) input of a CCblock 514. The TREF8 signal also goes through a second delay cell 516with a delay of t_(TOT)=N_(TOT)*t_(D) and is fed into the IN_(C) inputof the CC block 514. The reference voltages V_(ADJP) and V_(ADJN)produced by the CC block control the delay of the N_(ADJ)*D blocks510(a) and 510(b).

The pulses from the TREF8 signal will propagate through the two paths inthe lower block, and will be compared in the CC cell. The CC cell willadjust the V_(ADJP) and V_(ADJN) voltages to make the delay of the twodelay cells and buffer equal to t_(TOT). Note that the delay cells(N_(LIM)*D) and (N_(REP4)*D) are not included here because there is noneed to shape the TREF8 reference signal; the CC block only uses therelative positions of the IN_(D) and IN_(C) rising edges to generate theadjustment voltage.

In the upper cell, the delay seen by the input signal IN through the“and” gate, “or” gate, delay cell, and buffer will also be equal tot_(TOT) since all the components are matched and the V_(ADJP) andV_(ADJN) voltages are shared. If the delay of the receiver and bufferchange because of temperature and supply voltage variations, the delayof the N_(ADJ)*D delay cell will change in a complementary fashion sothe overall delay remains t_(TOT).

FIG. 36 shows a timing diagram for a REP4 cell such as shown in FIG. 35.The nodes along the real signal path are shown, and it can be seen thatthe delay from the IN node (NodeA) to the output node (NodeJ) is the sumof t_(TOT)=t_(AND)+t_(OR)+t_(ADJ)+t_(BUF). The value of t_(TOT) will bechosen to be greater than the maximum possible values (due to process,temperature and voltage variations) of t_(AND), t_(OR), t_(ADJ), andt_(BUF) when the V_(ADJP) and V_(ADJN) voltages are at their minimum andmaximum values, respectively (giving minimum delay). This ensures thatthe N_(ADJ)*D delay cell has enough range to compensate for the process,temperature, and voltage variations without adding unnecessary delay.

The initial pulse on NodeA becomes four pulses, the first delayed byt_(TOT), the rest following at intervals of t_(REP4). Each pulse isasserted for t_(LIM).

If a subsequent column operation is also a RD or RDA command, there willbe another pulse on NodeA a time t_(CC) after the first pulse (dottedline). The pulse that is produced a time t_(TOT) later on NodeJ will beNodeA a time t_(CC) after the first pulse. The minimum t_(CC) value willbe equal to 4*t_(REP4).

This example implementation of an asynchronous DRAM interface assumesthat the real signal path of the REP4 cell has a dedicated image signalpath (i.e., only one REP4 cell is used in this example). Otherimplementations might use more than one REP4 cell, in which case theimage signal paths could be shared among all real signal paths that arematched. This could be accomplished by adding dummy loading to the realsignals so that all REP4 blocks see the same effective load. This wouldreduce the cost of calibrating the DEC delay to the area of the(N_(ADJ)*D) delay cell plus a fraction of the image signal path cell.The V_(ADJP) and V_(ADJN) voltage signals would be routed to all the(matched) real signal paths from the image signal path.

Fifth Embodiment with Delayed Read Data

FIGS. 37 and 38 show an alternative embodiment in which extra logic hasbeen added to permit read data to be delayed by arbitrary, programmabletime intervals. This might be important to ensure that the read datareturns to the controller device after a fixed delay from when the readaddress is first transmitted, regardless of how far the memory componentis located from the controller. If, for example, there were two ranks ofmemory devices present on the memory bus, the closer rank would beprogrammed with enough extra delay to compensate for the longer roundtrip flight time to the further rank. When a controller issued a readaddress to either rank, the read data would appear at the same absolutetime at the controller pins.

FIG. 37 shows the data interface logic of an asynchronous memory devicein accordance with this alternative embodiment. Most components areidentical to those already discussed, and have been referenced withidentical numerals. An extra register 600 has been inserted in the pathof the read data, and is loaded by the rising edge of the new signalQLD0. This register can be configured to extend the valid window of theread data. It might not be necessary if the programmed delay valuesspanned a fairly small range, but would be needed for a larger range.The QLD0 signal is asserted at the same time that the QMX signal is alsoasserted high. This will give a time t_(D) for the read data that islatched in this register to propagate through the multiplexerscontrolled by the QMX signal and to set up the registers that are loadedby the rising edge of the QLD signal. The valid window of the RD readdata bus from the DRAM core is large enough to accommodate this earliersampling point.

As shown in FIG. 38, a four-to-one multiplexer 602 has been insertedinto the path of the signal that generates the QMX, QLD, QEN, and thenew QLD0 signal. This multiplexer is controlled by a Qsel[3:0]programming bus. This bus will typically be driven from a controlregister in the DRAM that is loaded by the memory controller at systeminitialization time. It might also be driven from DRAM pins that arededicated or shared with another function, or from fuses on the DRAMdevice, or by some equivalent technique.

The multiplexer 602 has four inputs, which receive versions of the LD1signal that have been delayed by successively larger intervals by delayelements 604. The value of Qsel[3:0] will enable an undelayed signal, orwill enable one of three delayed versions of the signal, withincremental delays of 1*t_(D), 2*t_(D), and 3*t_(D). This will cause allfour of the affected signals to shift together in time, causing the readdata bit windows on the external pins of the DRAM device to shift.

CONCLUSION

Although details of specific implementations and embodiments aredescribed above, such details are intended to satisfy statutorydisclosure obligations rather than to limit the scope of the followingclaims. Thus, the invention as defined by the claims is not limited tothe specific features described above. Rather, the invention is claimedin any of its forms or modifications that fall within the proper scopeof the appended claims, appropriately interpreted in accordance with thedoctrine of equivalents.

What is claimed is:
 1. A method of operation within a memory controllerthat is coupled to a memory device, the method comprising: outputting atiming signal to the memory device to initiate a read operation withinthe memory device, the timing signal to mark the start of anasynchronous delay interval at the conclusion of which the memory deviceoutputs read data associated with the read operation; and outputting adelay value to the memory device to adjust the delay interval such thatthe read data arrives at the memory controller at a desired time.
 2. Themethod of claim 1 wherein outputting the timing signal to the memorydevice comprises outputting a sequence of pulses each having a pulsewidth substantially equal to the interval between the pulses.
 3. Themethod of claim 1 wherein outputting the timing signal to the memorydevice comprises transitioning the voltage of a signal link between lowand high states to establish a timing edge that propagates on the signallink from the memory controller to the memory device.
 4. The method ofclaim 1 wherein outputting a timing signal to initiate a read operationwithin the memory device comprises outputting a timing signal thatenables a memory access command to be registered within the memorydevice.
 5. The method of claim 4 wherein outputting a timing signal thatenables a memory access command to be registered within the memorydevice comprises outputting a timing signal that enables an address tobe loaded within an address register of the memory device and anoperation code to be loaded into a command register of the memorydevice.
 6. The method of claim 1 wherein outputting a timing signal toinitiate a read operation within the memory device comprises outputtinga timing signal that enables a memory access command to be decodedwithin command decoding logic of the memory device.
 7. The method ofclaim 1 wherein outputting a timing signal to mark the start of anasynchronous delay interval comprises outputting a timing signal thatmarks the start of a delay interval that is asynchronous with respect tothe timing signal.
 8. The method of claim 1 wherein outputting a timingsignal to mark the start of an asynchronous delay interval comprisesoutputting a timing signal that is supplied to an asynchronous delayelement within the memory device.
 9. The method of claim 8 wherein theasynchronous delay interval corresponds to a time required for thetiming signal to propagate through the asynchronous delay element. 10.The method of claim 8 wherein outputting a timing signal that issupplied to an asynchronous delay element comprises outputting a timingsignal that is supplied to a sequence of delay elements havingrespective delays that sum to the asynchronous delay interval.
 11. Themethod of claim 1 wherein outputting a delay value to the memory deviceto adjust the delay interval comprises outputting the delay value to thememory device in a timing calibration operation.
 12. The method of claim11 wherein outputting a delay value to the memory device in a timingcalibration operation comprises outputting a plurality of pulses to thememory device to calibrate a delay element within the memory device. 13.The method of claim 11 wherein outputting the delay value to the memorydevice in a timing calibration operation comprises calibrating theasynchronous delay element to synchronize arrival of the read data atthe memory controller with a data sampling time of the memorycontroller.
 14. The method of claim 11 wherein outputting the delayvalue to the memory device in a timing calibration operation comprisescalibrating the asynchronous delay element to synchronize a first timethat elapses between output of the timing signal to the memory deviceand arrival of the read data at the memory controller with a second timethat elapses between output of a timing signal to another memory deviceand arrival of other read data, output from the other device in responseto the timing signal, at the memory controller.
 15. The method of claim1 further comprising outputting an address value to the memory device tospecify a location within the memory device from which the read data isto be retrieved in the read operation.
 16. The method of claim 15wherein outputting a delay value to the memory device to adjust thedelay interval such that the read data output from the memory devicearrives at the memory controller at a desired time comprises adjustingthe delay interval to establish a predetermined delay between output ofthe address value from the memory controller and the arrival of the readdata at the memory controller.
 17. The method of claim 1 whereinoutputting the timing signal to the memory device comprises outputting atiming signal that, upon arrival at the memory device, enables thememory device to transition a strobe signal between high and low statesto signal a time at which the memory controller is to sample the readdata output from the memory device.
 18. The method of claim 17 whereinoutputting a timing signal that enables the memory device to transitiona strobe signal between high and low states comprises outputting atiming signal that enables the memory device to cycle the strobe signalbetween low and high states, and wherein respective portions of the readdata are output from the memory device in synchronism with each of thetwo transitions of the strobe signal between low and high states thatoccur per cycle of the strobe signal.
 19. The method of claim 17 furthercomprising receiving at least a portion of the read data within thememory controller at a time indicated by the transition of the strobesignal.
 20. The method of claim 17 wherein the transition of the strobesignal between high and low states is aligned with output of the readdata from the memory device.
 21. The method of claim 1 whereinoutputting a delay value to the memory device to adjust the delay valuecomprises programming the delay interval within the memory device.